//1015. 德才论 (25)
//宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”：
//“是故才德全尽谓之圣人，才德兼亡谓之愚人，德胜才谓之君子，
//才胜德谓之小人。凡取人之术，苟不得圣人，君子而与之，
//与其得小人，不若得愚人。”
//
//现给出一批考生的德才分数，请根据司马光的理论给出录取排名。
//
//输入格式：
//
//输入第1行给出3个正整数，分别为：N（<=105），即考生总数；
//L（>=60），为录取最低分数线，即德分和才分均不低于L的考生才有资格被考虑录取；
//H（<100），为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”，
//此类考生按德才总分从高到低排序；才分不到但德分到线的一类考生属于“德胜才”，
//也按总分排序，但排在第一类考生之后；德才分均低于H，但是德分不低于才分的
//考生属于“才德兼亡”但尚有“德胜才”者，按总分排序，但排在第二类考生之后；
//其他达到最低线L的考生也按总分排序，但排在第三类考生之后。
//
//随后N行，每行给出一位考生的信息，包括：准考证号、德分、才分，其中
//准考证号为8位整数，德才分为区间[0, 100]内的整数。数字间以空格分隔。
//
//输出格式：
//
//输出第1行首先给出达到最低分数线的考生人数M，随后M行，每行按照输入格式
//输出一位考生的信息，考生按输入中说明的规则从高到低排序。当某类考生中有
//多人总分相同时，按其德分降序排列；若德分也并列，则按准考证号的升序输出。
//
//输入样例：
//14 60 80
//10000001 64 90
//10000002 90 60
//10000011 85 80
//10000003 85 80
//10000004 80 85
//10000005 82 77
//10000006 83 76
//10000007 90 78
//10000008 75 79
//10000009 59 90
//10000010 88 45
//10000012 80 100
//10000013 90 99
//10000014 66 60
//输出样例：
//12
//10000013 90 99
//10000012 80 100
//10000003 85 80
//10000011 85 80
//10000004 80 85
//10000007 90 78
//10000006 83 76
//10000005 82 77
//10000002 90 60
//10000014 66 60
//10000008 75 79
//10000001 64 90

#include <iostream>
#include <algorithm>
using namespace std;

struct stu {
    int num;
    int de;
    int cai;
    int total;
    int flag;
};

int cmp(stu a, stu b) {
    if (a.flag != b.flag) {
        return a.flag < b.flag;
    }
    else {
        if (a.total != b.total) {
            return a.total > b.total;
        }
        else {
            if (a.de != b.de)
                return a.de > b.de;
            else
                return a.num < b.num;
        }
    }
}

int main() {
    int n;
    cin >> n;
    int l, h;
    cin >> l >> h;
    stu *a = new stu [n];
    int count = 0;
    for (int i = 0; i < n; i++) {
        a[i].flag = 0;
        cin >> a[i].num >> a[i].de >> a[i].cai;
        if (a[i].de >= l && a[i].cai >= l) {
            count++;
            a[i].total = a[i].de + a[i].cai;
        }
        else {
            a[i].total = 0;
            a[i].flag = 5;
        }
    }
    cout << count << endl;
    
    for (int i = 0; i < n; i++) {
        if (a[i].de >= h && a[i].cai >= h) {
            a[i].flag = 1;
        } else if (a[i].de >= h && a[i].cai >= l && a[i].cai < h) {
            a[i].flag = 2;
        } else if (a[i].de >= l && a[i].cai >= l && a[i].de <= h &&
                   a[i].cai <= h && a[i].de >= a[i].cai) {
            a[i].flag = 3;
        } else if (a[i].flag != 5){
            a[i].flag = 4;
        }
    }
    
    sort(a, a + n, cmp);
    
    for (int i = 0; i < count; i++) {
        if (a[i].flag != 5) {
            cout << a[i].num << " " << a[i].de << " " << a[i].cai << endl;
        }
    }
    delete [] a;
    return 0;
}
